Skip to content

Latest commit

 

History

History
45 lines (41 loc) · 1.55 KB

2002-返回字符串数组中,相同部分的字符串.md

File metadata and controls

45 lines (41 loc) · 1.55 KB

思路:通过拿到字符串数组中最短的字符串数据,然后把所有的可能性字符串保存到一个集合中进行比较,然后返回其中一个字符长度最长的结果。

public String longestCommonPrefix(String[] strs) {

    if (strs == null || strs.length == 0) return "";
    
    int length = strs.length;
    //拿到字符串数组中最短的字符串做比较,因为字符串长度影响比较次数
    int minLength = strs[0].length();
    String minStr = strs[0];
    for (int i = 1; i < length; i++) {
        if (strs[i].length() < minLength) {
            minStr = strs[i];
            minLength = strs[i].length();
        }
    }
    //字符串截取,拿到所以可能的字符串,用于比较
    ArrayList<String> list = new ArrayList<>();
    for (int i = 1; i <= minLength; i++) {
        String substring = minStr.substring(0, i + 0);
        if(!list.contains(substring)) {
            list.add(substring);
        }
    }
    //比较字符串中是否存在以某个字符串开头的数据
    //如果某个字符串在数组所有的数据中都存在,并将长度是最大的返回
    String result="";
    for (int i=0;i<list.size();i++){
        for(int j=0;j<strs.length;j++){
            String str = strs[j];
            String currStr = list.get(i);
            if(!str.startsWith(currStr)){
                break;
            }else if(j==length-1 ){
                if(result.length()<currStr.length()){
                    result = currStr;
                }
            }
        }
    }

    return result;
}